package com.baomihua.utils.cast;


import org.apache.commons.lang3.StringUtils;

/**
 * CastUtils
 * @description: 数据转型工具类
 * @author mac
 */
public class CastUtils {


    /**
     * description: 转为String类型
     * @param obj
     * @return： Java.lang.String 如果参数为null则转为空字符串
     */
    public static String castString(Object obj){
        return CastUtils.castString(obj);
    }

    /**
     * @description: 转为String类型（提供默认值）
     * @param (obj,defaultValue) 将obf转为string，如果obj为null则返回default
     * @return: String
     */
    public static String castString(Object obj,String defaultValue){
        return obj != null?String.valueOf(obj): defaultValue;
    }

    /**
     * @description: 转为double类型，如果为null或者空字符串或者格式不对则返回0
     * @param obj
     * @return：String
     */
    public static double castDouble(Object obj){
        return CastUtils.castDouble(obj,0);
    }

    /**
     * @Description: 转为double类型 ，如果obj为null或者空字符串或者格式不对则返回defaultValue
     * @Param: [obj, defaultValue]
     * @return: String obj为null或者空字符串或者格式不对返回defaultValue
     */
    public static double castDouble(Object obj,double defaultValue){
        //声明结果，把默认值赋给结果
        double value = defaultValue;
        //判断是否为null
        if (obj!=null){
            //转换为String
            String strValue = castString(obj);
            //判断字符串是否为空（是否为空只能判断字符串，不能判断Object）
            if (StringUtils.isNotEmpty(strValue)){
                try{
                    //不为空则把值赋给value
                    value = Double.parseDouble(strValue);
                }catch (NumberFormatException e){
                    //格式不对把默认值赋给value
                    value = defaultValue;
                }

            }
        }
        return value;
    }
}
